package com.wlyuan.open.dto;

import com.alibaba.fastjson.JSONObject;
import com.wlyuan.open.OpenBaseSyncDTO;
import com.wlyuan.open.dto.transport.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author lijing
 * @description
 */
@EqualsAndHashCode(callSuper = true)
@Data
@ToString(callSuper = true)
public class OpenTransportSyncDTO extends OpenBaseSyncDTO implements Serializable {
    private static final long serialVersionUID = 7677654047010361288L;
    private Long waybillId;

    @ApiModelProperty(value = "合同号")
    private String contractNo;
    @ApiModelProperty(value = "创建方式 "
            + "老物流源(10：PC平台手动创建，11：移动端创建,12：预发货,13：订单导入,"
            + "14 ：新api对接,15：加加同步订单,16：起帆同步订单,19：电子回单创建"
            + "新物流源(50：PC平台手动创建, 51：移动端创建,54：开放平台API接入")
    private Integer source;
    @ApiModelProperty(value = "运单类型 10 客户单 20 运输单")
    private Integer waybillType;
    @ApiModelProperty(value = "订单ID")
    private Long orderId;
    @ApiModelProperty("订单租户")
    private Long orderTenantId;
    @ApiModelProperty("订单客户")
    private Long orderCustomerId;
    @ApiModelProperty("订单创建人")
    private Long orderCreateBy;
    @ApiModelProperty("订单客户类型")
    private Integer orderCustomerType;
    @ApiModelProperty("订单客户名称")
    private String orderCustomerName;
    @ApiModelProperty(value = "订单编号")
    private String orderNo;
    @ApiModelProperty(value = "发货时间")
    private LocalDateTime fromTime;
    @ApiModelProperty("发货信息")
    private TransportAddressDTO fromAddress;
    @ApiModelProperty(value = "收货时间")
    private LocalDateTime toTime;
    @ApiModelProperty("收货信息")
    private TransportAddressDTO toAddress;
    @ApiModelProperty(value = "重量补差")
    private BigDecimal differenceWeight;
    @ApiModelProperty(value = "体积补差")
    private BigDecimal differenceVolume;
    @ApiModelProperty(value = "价值补差")
    private BigDecimal differenceValue;
    @ApiModelProperty(value = "总重量(公斤)")
    private BigDecimal totalWeight;
    @ApiModelProperty(value = "总体积(方)")
    private BigDecimal totalVolume;
    @ApiModelProperty(value = "总价值(元)")
    private BigDecimal totalValue;
    @ApiModelProperty(value = "总数量")
    private Integer totalQuantity;
    @ApiModelProperty(value = "备注")
    private String remarks;
    @ApiModelProperty(value = "收货方ID")
    private Long consigneeId;
    @ApiModelProperty("收货方名称")
    private String consigneeName;
    @ApiModelProperty(value = "租户ID")
    private Long tenantId;
    @ApiModelProperty(value = "调度人")
    private Long dispatchBy;
    @ApiModelProperty(value = "调度时间")
    private LocalDateTime dispatchAt;
    @ApiModelProperty(value = "创建时间")
    private LocalDateTime createAt;
    @ApiModelProperty(value = "创建人")
    private Long createBy;
    @ApiModelProperty(value = "更新时间")
    private LocalDateTime updateAt;
    @ApiModelProperty(value = "更新人")
    private Long updateBy;
    @ApiModelProperty(value = "源运单ID")
    private Long sourceWaybillId;
    @ApiModelProperty("脱普-是否从单")
    private Integer followWaybill;
    @ApiModelProperty("扩展信息")
    private JSONObject echo;

    @ApiModelProperty(value = "运输要求")
    private TransportArgumentsDTO arguments;
    @ApiModelProperty("车辆信息")
    private TransportVehicleDTO vehicle;
    @ApiModelProperty("订单物品信息")
    private List<TransportGoodsDTO> goodsList;
    @ApiModelProperty("报价费用信息")
    private TransportPriceDTO quote;
    @ApiModelProperty("账单信息")
    private TransportFinanceDTO bill;
    @ApiModelProperty("关单信息")
    private TransportCloseDTO close;
    @ApiModelProperty("客户信息")
    private TransportCustomerDTO customer;
    @ApiModelProperty("承运方信息")
    private TransportCarrierDTO carrier;

    @ApiModelProperty("客户ID")
    private Long customerId;
    @ApiModelProperty("客户名称")
    private String customerName;
    @ApiModelProperty("客户类型")
    private Integer customerType;
}

